   *200
   MAIN,  CLA CLL         /Set the message pointer
          TAD ADDR    /To the beginning of the message + the length
          DCA PNTR
          TAD I PNTR
   LOOP,  JMS POP
          SNA             /Stop execution if zero
          HLT
          JMS OUT         /Otherwise, output a character
          JMP LOOP
   MESSG, 0
          012
          015
          "!
          "d
          "l
          "r
          "o
          "w
          " 
          ",
          "o
          "l
          "l
          "e
          "H
	ADDR, 230
   PUSH,  0
          ISZ PNTR       /Increment the pointer
          DCA I PNTR     /Store the accumulator at the specified location
          TAD I PNTR
          JMP I PUSH     /Return
   POP,   0
          DCA DATA       /Save a copy of the accumulator
          TAD PNTR       /Decrement the pointer
          TAD DECR
          DCA PNTR
          TAD DATA       /Store the previous value of the accumulator
          DCA I PNTR     /in the address pointed to by PNTR
          JMP I POP
   DATA,  0
   PNTR,  0
   DECR,  -1
   OUT,    0               / Will be replaced by caller's updated PC
           TSF             / Skip if printer ready
           JMP .-1         / Wait for flag
           TLS             / Send the character in the AC
           CLA CLL         / Clear AC and Link for next pass
           JMP I OUT      / Return to caller
$MAIN